package com.qixiaobao.addminus.service;

import com.qixiaobao.addminus.domain.Addminus;
import com.qixiaobao.addminus.domain.dto.AddminusDTO;
import com.qixiaobao.addminus.domain.dto.AddminusPreservationNoTempDTO;
import com.qixiaobao.addminus.domain.vo.AddminusVo;
import com.qixiaobao.system.domain.dto.PersonDTO;
import com.qixiaobao.system.domain.Person;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.List;

/**
 * @Description 增减员 业务层
 * @Author yangxm
 * @Date 2025/6/23 10:14
 */
public interface IAddMinusService {


    /**
     * @Description 增减员列表
     * @Author yangxm
     * @Date 2025/6/23 10:18
     * @param addminusDTO
     * @return java.util.List<com.qixiaobao.addminus.domain.Addminus>
     */
    List<Addminus> selectAddminusList(AddminusDTO addminusDTO);

    /**
     * @Description 增减员人数统计
     * @Author yangxm
     * @Date 2025/6/23 10:18
     * @param addminusDTO
     * @return com.qixiaobao.addminus.domain.vo.AddminusVo
     */
    AddminusVo selectAddMinusPersonTotal(AddminusDTO addminusDTO);

    /**
     * @Description 保险费总计
     * @Author yangxm
     * @Date 2025/6/23 10:18
     * @param addminusDTO
     * @return java.lang.String
     */
    BigDecimal selectCopeInsureFeeTotal(AddminusDTO addminusDTO);

    /**
     * @Description 导出
     * @Author yangxm
     * @Date 2025/6/23 15:13
     * @param addminusDTO
     * @param response
     */
    void export(AddminusDTO addminusDTO, HttpServletResponse response);

    /**
     * @Description 获取增减员人员详情
     * @Author yangxm
     * @Date 2025/6/23 15:25
     * @param personDTO
     * @return java.util.List<com.qixiaobao.nondirect.invoice.domain.domain.Person>
     */
    List<Person> personList(PersonDTO personDTO);

    /**
     * @Description 上传批单
     * @Author yangxm
     * @Date 2025/6/23 15:25
     * @param files
     * @param addminusId
     * @return java.lang.String
     */
    String uploadEndorses(MultipartFile[] files, Long addminusId);

    /**
     * @Description 定向下载模板  解析模板内容
     * @Author yangxm
     * @Date 2025/6/23 16:31
     * @param addminusPreservationNoTempDTOList
     * @return com.qixiaobao.addminus.domain.dto.AddminusPreservationNoTempDTO
     */
    AddminusPreservationNoTempDTO analysisEndorsesFile(List<AddminusPreservationNoTempDTO> addminusPreservationNoTempDTOList);

    /**
     * @Description 定向下载模板  批量下载批单
     * @Author yangxm
     * @Date 2025/6/23 16:57
     * @param addminusPreservationNoTempDTO
     */
    void downloadEndorsesByPreservationNoTemp(AddminusPreservationNoTempDTO addminusPreservationNoTempDTO);

    /**
     * @Description 批量删除批单
     * @Author yangxm
     * @Date 2025/6/23 17:07
     * @param addminusIdArray
     * @return int
     */
    int deleteEndorses(Long[] addminusIdArray);
}
